package cn.tedu.csmall.business.service.impl;

import cn.tedu.csmall.business.service.IBusinessService;
import cn.tedu.csmall.commons.pojo.order.dto.OrderAddDTO;
import cn.tedu.csmall.order.service.IOrderService;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class BusinessServiceImpl implements IBusinessService {

    @DubboReference
    IOrderService orderService;


    @Override
    @GlobalTransactional
//    最终的效果是有当前方法引入的所有远程调用对数据库的操作，要不全部成功
    //要不全部失败
    public void buy() {
        // 模拟购买业务
        // 创建一个OrderAddDTO类,并为它赋值
        OrderAddDTO orderAddDTO=new OrderAddDTO();
        orderAddDTO.setUserId("UU100");
        orderAddDTO.setCommodityCode("PU201");
        orderAddDTO.setCount(5);
        orderAddDTO.setMoney(500);
        // 模拟购买只是输出到控制台即可
        log.info("新增订单的信息为:{}",orderAddDTO);
        // 调用order业务
        orderService.orderAdd(orderAddDTO);
        System.out.println("调用order成功");
    }
}